Skip to content

[libaaplus] update to 2.70#51077

Draft
toge wants to merge 2 commits intomicrosoft:masterfrom
toge:libaaplus-2.70
Draft

[libaaplus] update to 2.70#51077
toge wants to merge 2 commits intomicrosoft:masterfrom
toge:libaaplus-2.70

Conversation

@toge
Copy link
Copy Markdown
Contributor

@toge toge commented Apr 9, 2026

  • Changes comply with the maintainer guide.
  • SHA512s are updated for each updated download.
  • The "supports" clause reflects platforms that may be fixed by this new version, or no changes were necessary.
  • Any fixed CI baseline and CI feature baseline entries are removed from that file, or no entries needed to be changed.
  • All patch files in the port are applied and succeed.
  • The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
  • Exactly one version is added in each modified versions file.

http://www.naughter.com/aa.html

@toge toge marked this pull request as draft April 9, 2026 18:37
@vicroms
Copy link
Copy Markdown
Member

vicroms commented Apr 16, 2026

AI reviewed using the skill in #51209


vcpkg CI Failure Report

Build: #129765
PR: #51077 — [libaaplus] update to 2.70 by @toge (draft)
Result: failed | Finished: 2026-04-09


Summary

Triplet Status New Regressions Known Failures
x64-windows ❌ Failed 1 (+2 cascade) 0
x64-windows-release ❌ Failed 1 (+2 cascade) 0
x86-windows ❌ Failed 1 (+2 cascade) 0
arm64-windows ❌ Failed 1 (+2 cascade) 0
x64-linux ✅ Passed 0 0
arm64-linux ✅ Passed 0 0
arm64-osx ✅ Passed 0 0
x64-android ✅ Passed 0 0
arm64-android ✅ Passed 0 0
arm-neon-android ✅ Passed 0 0
x64-windows-static ✅ Passed 0 0
x64-windows-static-md ✅ Passed 0 0
arm64-windows-static-md ✅ Passed 0 0

Total: 4 failed jobs (all Windows dynamic-link triplets), 1 root regression, 8 cascade failures


🔴 New Regressions (Action Required)

libaaplus — Missing ws2_32 Linker Dependency (Windows only)

Affected triplets: x64-windows, x64-windows-release, x86-windows, arm64-windows
Failure type: BUILD_FAILED (linker error)

  • Error:
    AAVSOP2013.cpp.obj : error LNK2019: unresolved external symbol htonl referenced in function "unsigned __int64 __cdecl fwrite_int32_t(int,struct _iobuf *)"
    AAVSOP2013.cpp.obj : error LNK2019: unresolved external symbol ntohl referenced in function "int __cdecl convert_read_int32_t(unsigned int const &)"
    lib\aaplus.dll : fatal error LNK1120: 2 unresolved externals
    
  • File: AAVSOP2013.cpp (new in v2.70)
  • Build phase: Debug build, link stage

Analysis:

Version 2.70 of libaaplus introduces AAVSOP2013.cpp which uses the Winsock byte-order functions htonl() and ntohl() for binary file I/O in the VSOP2013 planetary ephemeris reader. These functions are provided by ws2_32.lib on Windows. The CMake patch (fix-cmakelists.patch) does not link this library, causing unresolved externals on all Windows dynamic-link triplets.

The failure only affects dynamic-link Windows builds (x64-windows, x86-windows, arm64-windows, x64-windows-release). The static-link Windows triplets (x64-windows-static, x64-windows-static-md, arm64-windows-static-md) all pass — this is because static library builds defer symbol resolution to the final consumer, so the missing ws2_32 link doesn't surface at build time.

Linux, macOS, and Android all pass because htonl/ntohl are provided by the system C library (<arpa/inet.h>) without needing an extra link flag.

Cascade failures: libaaplus_core and libaaplus_tools fail on each affected triplet as downstream dependencies (2 per triplet × 4 triplets = 8 total cascade failures).

Suggested fix: Add ws2_32 as a link dependency in the CMake patch when building on Windows:

if(WIN32)
    if(BUILD_SHARED_LIBS)
        target_link_libraries(aaplus-shared PRIVATE ws2_32)
    else()
        target_link_libraries(aaplus-static PRIVATE ws2_32)
    endif()
endif()

Alternatively, the upstream AAVSOP2013.cpp could use platform-agnostic byte-swap macros (e.g., from <cstdlib>) instead of Winsock functions, but that would require an upstream change or an additional source patch.


🟡 Known / Expected Failures (Baseline)

No entries for libaaplus in scripts/ci.baseline.txt. All failures are new regressions.


ℹ️ Notes

  • The root cause is a single missing link library (ws2_32) — a one-line fix in the CMake patch resolves all 4 triplet failures and 8 cascade failures
  • Static-link triplets pass because unresolved externals in static libraries are deferred to link time of the consuming application
  • The AAVSOP2013 module is new in v2.70 and was not present in v2.36, explaining why this wasn't an issue before
  • The PR also correctly updated the SHA512 hash and version database entries

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants